package com.scu.phototabuser.util;

import android.support.annotation.NonNull;

import com.scu.phototabuser.Consts;

import java.security.MessageDigest;

/**
 * Created by tianfei on 2017/3/14.
 */

/**
 *
 * 所有接口都只支持POST请求；
 *所有接口请求Content-Type类型为：application/x-www-form-urlencoded;charset=utf-8；
 *所有接口返回类型为JSON，同时进行UTF-8编码。

 //获取Header参数  包括：AppKey, Content-Type, nonce, curTime, checkSum, Signature
 //URL签名算法步骤如下：
 //1. 将所有参数按参数名进行升序排序；
 //2. 将排序后的参数名和值拼接成字符串stringParams，格式：key1value1key2value2...；
 //3. stringURI + stringParams + AppSecret；
 //4. 使用AppSecret为密钥，对上一步的结果字符串使用HMAC算法计算MAC值，这个MAC值就是签名。这里使用HMAC_SHA256
*/
public class CheckSumBuilder {
    // 计算并获取CheckSum
    public static String getCheckSum(@NonNull String appSecret,
                                     @NonNull String url,
                                     @NonNull String appKey,
                                     @NonNull String curTime,
                                     @NonNull String nonce) {

        String server_url=url.substring(url.indexOf(Consts.ipAddr)+Consts.ipAddr.length(),url.length());

        StringBuffer buffer=new StringBuffer();
        //url
        buffer.append(server_url);
        //params
        buffer.append("AppKey").append(appKey)
                .append("curTime").append(curTime)
                .append("nonce").append(nonce);

        try {
            String checkSum=Encrypted.HMAC_SHA256(buffer.toString(),appSecret);
            return checkSum;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}
